home *** CD-ROM | disk | FTP | other *** search
- MCOPY - NΘCLEO DE LA COPIA DE DISQUETES.
- A través de MCopy se realiza el copiado de disquetes propiamente dicho, MCopy es una
- unidad que entra en funcionamiento por medio del procedimiento Copy_Disk llamado por Mprog
- en HandleEvent.
- En MCopy se crea un nuevo objeto de diálogo dependiente de Tdialog que se encargará
- de copiar los disquetes. A Copy Disk se le pasan tres parámetros obtenidos previamente en
- MProg: número de la unidad de disquete a procesar, número de copias que se van a hacer y
- si se van a verificar las copias o no.
- Para usar un diálogo como sistema para copiar disquetes he tenido que modificar el
- método Execute para adaptarlo a mis necesidades. El método Execute consta de un bucle
- donde se procesan los diversos sucesos, en mi método Execute hay dos bucles que coinciden
- con la lectura y con la escritura del disquete y de los que se sale por medio de Handlevent que
- procesa el suceso si hemos pulsado ESC o hemos activado algún comando de cerrar la ventana
- mediante el ratón o ALT-F3, además se encarga de analizar el disquete introducido desechando
- los disquetes erróneos, actualiza el sistema de ayuda para poder ser utilizado con la gestión de
- errores ,contabilizar el progreso de la copia y el tiempo de la misma.
- Para saber donde se va a colocar la imagen del disquete existe el tipo Tplace y la variable
- Where y su funcionamiento es el siguiente: primero se comprueba si hay memoria extendida,
- si la hay se utiliza esta y a la variable Where se le asigna el valor In_XMS, si no hay suficiente
- memoria extendida se prueba con la memoria expandida y si hay suficiente se asigna a Where
- el valor In_Ems, por último si no hay suficiente memoria extendida ni expandida se utiliza el
- disco duro y la imagen se coloca en el mismo directorio donde se ejecuta el programa en el
- fichero DISK.DAT que al finalizar el programa se borra.
- Utiliza el programa mas memoria de la que se necesita como un sistema de seguridad,
- para eso está la variable MEMPOOL que aloja 16 Kb más de memoria.
- La copia de disquetes se puede interrumpir en cualquier momento por medio de la tecla
- de ESC o pulsando con el ratón en el icono de cerrar del diálogo situado en la esquina superior
- izquierda del mismo.
- Los módulos que utiliza el programa son los siguientes:
- Dos,crt,Emimsbox,Objects,Drivers,Views,Dialogs,Emiapp,Mdhelp - Para la gestión de la
- presentación y de los diálogos y objetos visuales y las definiciones de ayuda y sucesos
- del programa.
- Mdrive - Módulo que da soporte a las funciones BIOS de manejo de disquetes.
- Timer - Módulo para contar el tiempo.
- Mxmsst - Módulo para la creación de un flujo o Tstream que utiliza memoria extendida.
- Ahora voy a describir los procedimientos más importantes de Copydlg, puesto que los
- procedimientos derivados estándar han sido explicados con anterioridad no los trataré ahora:
- Procedure Draw - Dibuja el diálogo que es el área de trabajo del programa.
- Procedure Read_Floppy - Lee el disquete fuente.
- Procedure Write_Floppy - Escribe mediante un bucle los disquetes de destino.
- Procedure Get_Real_Time - Obtiene el tiempo real de copia.
- Procedure Get_Estimated_Time(Track:Byte) - Obtiene el tiempo estimado de copia.
- Procedure Updating - Actualiza algunos datos del diálogo.
- Function Execute:Word - Efectúa el copiado de los disquetes.
- Function Interrupcion:Boolean -Comprueba si el usuario quiere de verdad salir del
- programa o ha pulsado ESC equivocadamente.
- Además de estos procedimientos tenemos las siguientes variables:
- La ya mencionada Where, además de Mempool reserva de memoria de seguridad de
- 16Kb por si acaso, estas son las mas importantes, hay otras de menor importancia.
- El programa detecta los errores de disquete e interrumpe la copia si es necesario.
- El programa ha sido realizado de modo que sea en Execute donde se realice realmente
- la copia del disquete, en otros casos se emplea un bucle para la gestión de los sucesos,
- pero como aquí execute tiene dos partes, la parte de lectura del disquete y la parte de
- escritura, por eso hay dos bucles que captan las teclas pulsadas por el usuario. Para salir
- del programa o bien se pulsa ESC o con el ratón encima del icono de cerrar ventana
- situado en la parte superior izquierda de esta.
- Mediante de la utilización de un conmutador /V el programa verifica que la copia se ha
- realizado correctamente.